package br.ufrj.dcc.ia.jogadores;

import java.util.ArrayList;
import java.util.List;

import br.ufrj.dcc.ia.excecoes.PartidaException;
import br.ufrj.dcc.ia.utils.Carta;

public class Dealer{
	
	public Dealer(){
		this.mao = new ArrayList<Carta>();
	}

	public List<Carta> mao;
	
	public List<Carta> getMao() {
		return mao;
	}
	
	public void setMao(List<Carta> mao) {
		this.mao = mao;
	}
	
	public Integer getPontuacaoCorrente() {
		int pontuacao = 0;
		for(Carta c : mao){
			pontuacao += c.getPontos();
		}
		return pontuacao;
	}
	
	public void hit(List<Carta> baralhoPartida) throws PartidaException{
		if(baralhoPartida.size() == 0){
			throw new PartidaException();
		}
		Carta cartaComprada = baralhoPartida.get(0);
		this.getMao().add(cartaComprada);
		baralhoPartida.remove(cartaComprada);
		System.out.println("Dealer  deu Hit - " + cartaComprada.toString()+ " -- " + this.getPontuacaoCorrente() + " pontos");
	}
	
	public void stand(){
		System.out.println("Dealer deu stand");
	}
	
	public void jogar(List<Carta> baralhoPartida) throws PartidaException{
		
		Boolean jogando = true;
		
		if(this.getMao().size() < 2){
			throw new PartidaException();
		}
		this.getMao().get(1).setVisivel(true);
		
		while(this.getPontuacaoCorrente()<=17){
			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			this.hit(baralhoPartida);
		}
		
		if(this.getPontuacaoCorrente() < 22){
			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			this.stand();
		}
		
	}

}
